Devices may allocate and deallocate resources for various purposes in support of the overall operation of a device. For example, a storage device, such as a solid state drive (SSD), may allocate and deallocate resources in support of data buffer access, error checking and correction (ECC) encoding when storing data to non-volatile memory (e.g., Flash memory), Flash channel access when retrieving data from the non-volatile memory, and ECC decoding when retrieving data from the non-volatile memory. In instances where the number of resources is less than the number of units (which may be referred to as “requestors”), the storage device may implement an arbitration scheme (such as a so-called round robin scheme) in an attempt to provide reasonably balanced access to the resources in a manner that avoids excessive delays.
In some instances, the number of resources is artificially limited to achieve more efficient operation of the storage device (e.g., in terms of power consumption). That is, some portion of the available resources may be powered-off to reduce power consumption and corresponding costs associated with operating the storage devices. In artificially limiting the number of resources in certain contexts, manufacturers of storage devices are attempting to balance performance with operating efficiency. For example, various manufacturers have attempted to dynamically power on those resources that were initially powered off to improve performance when resource demand is high and dynamically power off these same resources to improve operating efficiency when resource demand is low.
Dynamic resource allocation and deallocation may therefore permit various resources to be powered on when needed and powered off when not needed. Algorithms developed to facilitate this power-saving resource allocation/deallocation may however suffer due to limitations in allocation data structures. First-in-first-out (FIFO) data structures or last-in-first-out (LIFO) data structures used for resource allocation/deallocation may result in random distributions where deallocated resources are intermixed with allocated resources, making it difficult to know when a specific resource will be required with sufficient time to make these resources available in time to service requests. Complicated hardware may be employed or general purpose processors (such as a central processing unit or CPU) may be deployed to facilitate dynamic resource allocation/deallocation that may adequately balance operating efficiency while also provide adequate performance. However, this dedicated hardware or repurposed CPUs may consume significant power, offsetting many if not all of the power savings provided through dynamic allocation/deallocation algorithms.